/*
 * @Author: Yang qiuyou wangyi168359476@163.com
 * @Date: 2024-07-26 11:15:02
 * @LastEditors: wanghuan wanghuan@sgsimulation.com
 * @LastEditTime: 2024-09-04 10:09:02
 * @FilePath: \SGFEM\DataStructure\FEM\Property\include\PSHELLData.h
 * @Description: PSHELL 普通壳截面定义.
 *
 */

#pragma once

#include "DataStructure/Common/DataStructureNamespace.h"
#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Real.h"
#include "DataStructure/Input/Property/PropertyBase.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN
/// @brief 普通壳截面定义.
struct DECLSPEC PSHELLData : PropertyBase
{
  public:
    void SetDefault ()
    {
        m_bendModify = 1.0;
        m_ts         = 5.0 / 6.0;
    }

    SG::DataStructure::Common::Id   m_mId1       = 0;          ///< 膜部分材料属性。当表示纯板单元时， 设置为0
    SG::DataStructure::Common::Real m_thickness  = 0.0;        ///< 单元厚度，可以为空（将其设置为 -1.0）
    SG::DataStructure::Common::Id   m_mId2       = -1;         ///< 弯曲部分材料常数，纯膜单元设置为-1
    SG::DataStructure::Common::Real m_bendModify = 1.0;        ///< 弯曲部分修正参数，默认1.0
    SG::DataStructure::Common::Id   m_mId3       = 0;          ///< 剪切部分材料号.当m_mId2有效时才能生效
    SG::DataStructure::Common::Real m_ts         = 5.0 / 6.0;  ///< 横向剪切厚度比
    SG::DataStructure::Common::Real m_nsm        = 0.0;        ///< 非结构质量
    SG::DataStructure::Common::Real m_z[2]       = { 0.0 };    ///< 距离中性面的高度， 默认值 +0.5/-0.5倍的 m_thickness
    SG::DataStructure::Common::Id   m_mId4       = 0;          ///< 拉，弯耦合部分材料属性
    SG::DataStructure::Common::Id   m_domainId   = 0;
};

DECLSPEC bool operator== (const PSHELLData &a, const PSHELLData &b);
SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE